﻿package mortal.game.view.arena.util
{
    import Message.DB.Tables.*;
    import Message.Public.*;
    import extend.language.*;
    import mortal.component.gconst.*;
    import mortal.game.cache.*;
    import mortal.game.control.*;
    import mortal.game.manager.*;
    import mortal.game.resource.info.item.*;
    import mortal.game.resource.tableConfig.*;
    import mortal.game.view.arena.data.*;

    public class ArenaUtil extends Object
    {
        public static var ArenaInPm:int = 1;
        public static var ArenaInNight:int = 2;

        public function ArenaUtil()
        {
            return;
        }// end function

        public static function isObserver() : Boolean
        {
            var _loc_1:* = Cache.instance.role.entityInfo.name;
            var _loc_2:* = Cache.instance.arena.getArenaResultData(ArenaConst.Type_ArenaResult_Self);
            var _loc_3:* = Cache.instance.arena.getArenaResultData(ArenaConst.Type_ArenaResult_Other);
            if (_loc_2 && _loc_3)
            {
                if (_loc_1 != _loc_2.roleName && _loc_1 != _loc_3.roleName)
                {
                    return true;
                }
            }
            return false;
        }// end function

        public static function isNewArea() : Boolean
        {
            var _loc_1:* = Cache.instance.login.loginGame.openDt;
            var _loc_2:* = ClockManager.instance.nowDate;
            var _loc_3:* = (_loc_2.time - _loc_1.time) / (1000 * 3600 * 24);
            if (_loc_3 <= 7)
            {
                return true;
            }
            return false;
        }// end function

        public static function getArenaDayRuleData() : Array
        {
            var _loc_4:int = 0;
            var _loc_5:TArenaConfig = null;
            var _loc_6:ArenaDayRuleData = null;
            var _loc_1:* = getArenaInitScore();
            var _loc_2:* = ArenaConfig.instance.getInfosByTypeAndLevel(ECopyType._ECopyTypeArena, 5);
            var _loc_3:Array = [];
            for each (_loc_5 in _loc_2)
            {
                
                _loc_6 = new ArenaDayRuleData();
                _loc_6.pointMinValue = _loc_1 + _loc_5.condExtend;
                _loc_6.pointMaxValue = _loc_1 + _loc_5.val;
                _loc_6.rewardMaxValue = _loc_5.valExtend + (_loc_5.val - _loc_5.condExtend) * _loc_5.valExTend2 / 10000;
                if (_loc_5.val > 100000)
                {
                    _loc_4 = _loc_5.condExtend + 2000;
                }
                else
                {
                    _loc_4 = _loc_5.val;
                }
                _loc_6.rewardMinValue = _loc_5.valExtend + (_loc_5.condExtend - _loc_5.condExtend) * _loc_5.valExTend2 / 10000;
                _loc_3.push(_loc_6);
            }
            return _loc_3;
        }// end function

        public static function getArenaWeekRuleData(param1:int) : Array
        {
            var _loc_3:int = 0;
            var _loc_6:TArenaReward = null;
            var _loc_7:ArenaWeekRuleData = null;
            var _loc_2:* = ArenaController.ArenaLevel;
            if (param1 == EArenaRewardType._EArenaRewardTypeWeek)
            {
                _loc_3 = ArenaController.ArenaBTopLevel;
            }
            else
            {
                _loc_3 = ArenaController.ArenaZoneBTopLevel;
            }
            var _loc_4:* = ArenaRewardConfig.instance.getInfosByTypeAndLevel(param1, _loc_2, ECopyType._ECopyTypeArena);
            var _loc_5:Array = [];
            for each (_loc_6 in _loc_4)
            {
                
                _loc_7 = new ArenaWeekRuleData();
                _loc_7.type = param1;
                _loc_7.rankMaxValue = _loc_6.rankCondMax;
                _loc_7.rankMinValue = _loc_6.rankCondMin;
                if (_loc_2 >= _loc_3)
                {
                    _loc_7.itemCode = _loc_6.diaoItemCode;
                }
                else
                {
                    _loc_7.itemCode = _loc_6.itemCode;
                }
                _loc_5.push(_loc_7);
            }
            return _loc_5;
        }// end function

        public static function getStrCode(param1:int, param2:Boolean = true) : int
        {
            var _loc_3:int = 0;
            switch(param1)
            {
                case EEntityAttribute._EAttributeArenaBronze:
                {
                    _loc_3 = param2 ? (40602) : (40603);
                    break;
                }
                case EEntityAttribute._EAttributeArenaSilver:
                {
                    _loc_3 = param2 ? (40604) : (40605);
                    break;
                }
                case EEntityAttribute._EAttributeArenaGold:
                {
                    _loc_3 = param2 ? (40606) : (40607);
                    break;
                }
                case EEntityAttribute._EAttributeArenaJewel:
                {
                    _loc_3 = param2 ? (40608) : (40609);
                    break;
                }
                case EEntityAttribute._EAttributeArenaSJewel:
                {
                    _loc_3 = param2 ? (40610) : (40611);
                    break;
                }
                default:
                {
                    break;
                }
            }
            return _loc_3;
        }// end function

        public static function getArenaInitScore() : int
        {
            var _loc_3:int = 0;
            var _loc_1:* = ArenaConfig.instance.getInfosByTypeAndLevel(ECopyType._ECopyTypeArena, 2, ArenaController.ArenaLevel);
            var _loc_2:* = _loc_1[0] as TArenaConfig;
            if (_loc_2)
            {
                _loc_3 = _loc_2.val;
            }
            return _loc_3;
        }// end function

        public static function getArenaMoneyByLevel(param1:int) : ArenaMoney
        {
            var _loc_2:* = new ArenaMoney();
            if (param1 >= 0 && param1 < 70)
            {
                _loc_2.moneyName = Language.getString(40803);
                _loc_2.moneyNum = Cache.instance.role.money.arenaBronze;
                _loc_2.shopIndex = 0;
            }
            else if (param1 >= 70 && param1 < 80)
            {
                _loc_2.moneyName = Language.getString(40804);
                _loc_2.moneyNum = Cache.instance.role.money.arenaSilver;
                _loc_2.shopIndex = 1;
            }
            else if (param1 >= 80 && param1 < 90)
            {
                _loc_2.moneyName = Language.getString(40805);
                _loc_2.moneyNum = Cache.instance.role.money.arenaGold;
                _loc_2.shopIndex = 2;
            }
            else if (param1 >= 90 && param1 < 100)
            {
                _loc_2.moneyName = Language.getString(40806);
                _loc_2.moneyNum = Cache.instance.role.money.arenaJewel;
                _loc_2.shopIndex = 3;
            }
            else
            {
                _loc_2.moneyName = Language.getString(40807);
                _loc_2.moneyNum = Cache.instance.role.money.arenaSJewel;
                _loc_2.shopIndex = 4;
            }
            _loc_2.itemCode = ArenaConfig.instance.getArenaMoneyCode(2, param1, ECopyType._ECopyTypeArena);
            return _loc_2;
        }// end function

        public static function getVipAddition() : int
        {
            var _loc_3:int = 0;
            var _loc_1:* = Cache.instance.vip.level;
            var _loc_2:* = VipConfig.instance.getVipConfigByType(EVipRecordType._EVipRecordTypeArenaMoney);
            if (_loc_1 > 0 && _loc_2 != null)
            {
                _loc_3 = _loc_2["vip" + _loc_1] == null ? (0) : (int(_loc_2["vip" + _loc_1]));
            }
            return _loc_3;
        }// end function

        public static function isPmOrNight() : int
        {
            var _loc_1:* = ClockManager.instance.nowDate;
            if (_loc_1.hours < 18)
            {
                return ArenaInPm;
            }
            return ArenaInNight;
        }// end function

        public static function getStrTimeByDate(param1:Date) : String
        {
            var _loc_2:* = param1.fullYear + "-" + (param1.month + 1) + "-" + param1.date + " " + param1.hours + ":" + param1.minutes + ":" + param1.seconds;
            return _loc_2;
        }// end function

        public static function getGiftItems(param1:int) : Array
        {
            var _loc_7:Array = null;
            var _loc_8:int = 0;
            var _loc_9:int = 0;
            var _loc_10:int = 0;
            var _loc_11:int = 0;
            var _loc_12:ItemData = null;
            var _loc_13:int = 0;
            var _loc_14:Array = null;
            var _loc_2:Array = [];
            var _loc_3:* = new ItemData(param1);
            var _loc_4:* = _loc_3.itemInfo as ItemGiftBagInfo;
            var _loc_5:* = _loc_4.itemList1;
            var _loc_6:* = _loc_4.itemList2;
            if (_loc_5)
            {
                _loc_7 = _loc_5.split("&");
                _loc_8 = 0;
                while (_loc_8 < _loc_7.length)
                {
                    
                    _loc_9 = int(_loc_7[_loc_8].split("#")[1]);
                    _loc_10 = int(_loc_7[_loc_8].split("#")[2]);
                    if (_loc_7[_loc_8].split("#").length == 4)
                    {
                        _loc_11 = int(_loc_7[_loc_8].split("#")[3]);
                    }
                    _loc_12 = new ItemData(_loc_9);
                    _loc_12.itemAmount = _loc_10;
                    _loc_13 = Cache.instance.role.entityInfo.career;
                    if (_loc_11 == 0 || _loc_11 == _loc_13)
                    {
                        _loc_2.push(_loc_12);
                    }
                    _loc_8++;
                }
            }
            if (_loc_6)
            {
                _loc_14 = _loc_6.split("&");
                _loc_8 = 0;
                while (_loc_8 < _loc_14.length)
                {
                    
                    _loc_9 = int(_loc_14[_loc_8].split("#")[1]);
                    _loc_10 = int(_loc_14[_loc_8].split("#")[2]);
                    _loc_12 = new ItemData(_loc_9);
                    _loc_12.itemAmount = _loc_10;
                    _loc_12.extData = new Object();
                    _loc_12.extData.isRandomGet = true;
                    _loc_2.push(_loc_12);
                    _loc_8++;
                }
            }
            return _loc_2;
        }// end function

        public static function getWeaponData(param1:int) : ItemData
        {
            var _loc_2:* = ArenaUtil.getGiftItems(param1);
            if (_loc_2.length > 0)
            {
                return _loc_2[0] as ItemData;
            }
            return null;
        }// end function

        public static function isGiftItemCode(param1:int) : Boolean
        {
            var _loc_2:* = new ItemData(param1);
            if (_loc_2.itemInfo is ItemGiftBagInfo)
            {
                return true;
            }
            return false;
        }// end function

        public static function isEquipItemCode(param1:int) : Boolean
        {
            var _loc_2:* = new ItemData(param1);
            if (_loc_2.itemInfo is ItemEquipInfo)
            {
                return true;
            }
            return false;
        }// end function

        public static function isArenaCopyCode(param1:int) : Boolean
        {
            if (param1 == GameConst.ArenaCopyCode1 || param1 == GameConst.ArenaCopyCode2 || param1 == GameConst.ArenaCopyCode3)
            {
                return true;
            }
            return false;
        }// end function

        public static function getModelTypeByItemCode(param1:int) : int
        {
            var _loc_2:int = 0;
            var _loc_4:ItemData = null;
            var _loc_3:* = getGiftItems(param1);
            if (_loc_3.length > 0)
            {
                _loc_4 = _loc_3[0] as ItemData;
                if (isGiftItemCode(_loc_4.itemCode))
                {
                    _loc_2 = getModelTypeByItemCode(_loc_4.itemCode);
                }
                else if (isEquipItemCode(_loc_4.itemCode))
                {
                    if (_loc_4.itemInfo.category == EProp._EPropFashionClothesEquip || _loc_4.itemInfo.category == EProp._EPropFashionWingEquip)
                    {
                        _loc_2 = ArenaConst.ModelType_ClothWing;
                    }
                    if (_loc_4.itemInfo.category == EProp._EPropFashionWeaponEquip)
                    {
                        _loc_2 = ArenaConst.ModelType_Weapon;
                    }
                    if (_loc_4.itemInfo.category == EProp._EPropMountEquip)
                    {
                        _loc_2 = ArenaConst.ModelType_Mount;
                    }
                }
            }
            return _loc_2;
        }// end function

    }
}
